﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _03_委托_绑定_静态方法
{
    //1.定义一个委托:通过反编译工具可以看到委托其实是一个密封类，继承自MulticastDelegate
    public delegate void DoSome();

    internal class Program
    {
        static void Main(string[] args)
        {
            //3.实例化委托
            //DoSome doSome = new DoSome(Program.DoSomeMethod);
            DoSome doSome = Program.DoSomeMethod;//简化写法，和上面的写法等价。因为编译器在编译时会自动将Program.DoSomeMethod转换为new DoSome(Program.DoSomeMethod)
            //4.通过委托调用所绑定的方法
            //doSome.Invoke();//完整写法
            doSome();//简化写法，和上面的写法等价。因为编译器在编译时会自动将doSome()转换为doSome.Invoke()

            Console.ReadKey();
        }
        //2.定义一个静态方法,用于绑定委托：方法的形参与返回值类型要与委托的声明保持一致
        public static void DoSomeMethod()
        {
            Console.WriteLine("我是静态方法");
        }
    }
}
